package CollectionDemo;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

public class IteratorTest {
    public static void main(String[] args) {
        /*
        迭代器在遍历集合的时候是不依赖索引的
          迭代器的细节注意点、
          1.报错NoSuchElementException
          2.迭代器遍历完毕，指针不会复位
          3.循环中只能使用一次next方法
          4.迭代器遍历时，不能使用集合的方法进行增加或删除  会抱错ConcurrentModificationException
            如果实在要删除，可以使用迭代器的remove方法删除
            如果要添加，暂时没有办法
         */
        Collection<String> coll = new ArrayList<>();
        coll.add("aaa");
        coll.add("bbb");
        coll.add("ccc");
        coll.add("ddd");
        coll.add("eee");
        //2.获取迭代器对象
        //迭代器就好比一个箭头，默认指向集合的0索引处（set没有索引，）或者说指向集合的第一个元素
        Iterator<String> it = coll.iterator();
        //3.利用循环不断的去获取集合中的每一个元素
        while (it.hasNext()) {
            //4.next的两件事情：获取指针并移动指针
//            System.out.println(it.next());// aa  cc  ee
//            System.out.println(it.next());// bb  dd  NoSuchElementException

            String str=it.next();
            if("bbb".equals(str)){
//                coll.remove(str);
                //删除当前指针指向的元素
                it.remove();
            }

        }
        //当上面循环结束后，迭代器的指针已经指向了最后没有元素的位置
//        System.out.println(it.next());

    }
}
